home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / mnp_c.zip / SETPAR.ASM < prev    next >
Assembly Source File  |  1990-05-16  |  2KB  |  79 lines

  1.     title mnpc\setpar.asm
  2.     page    60,132
  3. ;==============================================================================
  4. ;
  5. ;                      The Microcom MNP Library
  6. ;                        (Microsoft C Version)
  7. ;
  8. ;------------------------------------------------------------------------------
  9. ;
  10. ;    Setpar - set input data byte to specified character format
  11. ;
  12. ;    Synopsis:  c = setpar(data_byte, par_type);
  13. ;
  14. ;            char data_byte;
  15. ;            int par_type;
  16. ;
  17. ;==============================================================================
  18.  
  19. _data    segment word public 'DATA'
  20. _data    ends
  21. dgroup    group _data
  22.  
  23. _text    segment byte public 'CODE'
  24.     assume     cs:_text,ds:dgroup
  25.  
  26.     public    _setpar
  27.  
  28. ; Local equates
  29. NONE    =    0
  30. EVENP    =    1
  31. ODD    =    2
  32. MARK    =    3
  33. SPACE    =    4
  34. ;
  35. _setpar    proc    near
  36.     push    bp                ;save register
  37.     mov    bp,sp            ;point to parameters
  38.  
  39.     mov    ah,[bp+6]            ;get parity type
  40.     mov    al,[bp+4]            ;get data byte
  41.  
  42.     cmp    ah,NONE             ;8 none?
  43.     je    setp9            ;yes-go exit
  44.  
  45.     and    al,07fh             ;clear parity bit
  46.  
  47.     cmp    ah,EVENP             ;7 even?
  48.     jne    setp1            ;no-go on
  49.  
  50.     or    al,al            ;get current parity sense
  51.     jpe    setp9            ;if even, go exit
  52.     or    al,80h            ;else set parity bit
  53.     jmp    short setp9        ;and go exit
  54.  
  55. setp1:
  56.     cmp    ah,ODD            ;7 odd?
  57.     jne    setp2            ;no-go on
  58.  
  59.     or    al,al            ;get current parity sense
  60.     jpo    setp9            ;if odd, go exit
  61.     or    al,80h            ;else set parity bit
  62.     jmp    short setp9        ;and go exit
  63.  
  64. setp2:
  65.     cmp    ah,MARK             ;7 mark?
  66.     jne    setp9            ;no-already set to space, go exit
  67.  
  68.     or    al,80h            ;set parity bit
  69.  
  70. setp9:
  71.     xor    ah,ah            ;clear high part of ax
  72.     pop    bp                ;restore register
  73.     ret                    ;return byte in ax
  74.  
  75. _setpar    endp
  76.  
  77. _text    ends
  78.     end
  79.